package com.shg.service.impl.bbs;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Service;

import com.shg.bean.Book;
import com.shg.bean.Users;
import com.shg.bean.bbs.Favorite;
import com.shg.bean.bbs.FavoriteItem;
import com.shg.service.bbs.FavoriteService;
import com.shg.service.impl.BasiceDaoImpl;

@Service
public class FavoriteServiceBean extends BasiceDaoImpl<Favorite> implements FavoriteService {
	/**
	 * 收藏图书
	 *	某个人要收藏某本书籍
	 *@param userId收藏人
	 *@param favoriteItem收藏项
	 */
	public void insertBook(String userId,FavoriteItem favoriteItem)throws Exception{
		//首先检查用户是否有收藏夹
		Favorite favorite= (Favorite) sessionFactory.getCurrentSession().get(Favorite.class, userId);
		//如果还没有收藏夹就给他创建一个收藏夹
		if(favorite==null){
			favorite=new Favorite();
			Users user=new Users();
			user.setId(userId);
			favorite.setUser(user);
		}
		//查询该用户是否收藏过该本书籍，如果已经收藏就把该书籍排在收藏夹的前面，否则收藏书籍并放在首位
		//初始化收藏选项
		favorite.initItems();
		//添加购物项
		boolean flag = favorite.addItem(favoriteItem);
		
		sessionFactory.getCurrentSession().save(favorite);
		//如果是第一次收藏该数据需要把Love字段再加10
		if(!flag){
			String sql="update Book set love=love+10 where id='"+favoriteItem.getId()+"'";
			sessionFactory.getCurrentSession().createSQLQuery(sql).executeUpdate();
		}
	}
	/**
	 * 获取收藏的书籍
	 * @param shopid 店铺的ID也登录用户的ID
	 */
	public List<Book> getBook(String shopid)throws Exception{
		Favorite favorite =  (Favorite) sessionFactory.getCurrentSession().get(Favorite.class, shopid);
		//初始化数组
		if(favorite!=null){
			List<FavoriteItem> items = favorite.initItems();
			List<Book> books=new ArrayList<Book>();
			for(FavoriteItem item:items){
				if(item!=null){
					Book book = (Book)sessionFactory.getCurrentSession().get(Book.class, item.getId());
					books.add(book);
				}
			}
			return books;
		}
		return null;
	}
	/**
	 * 收藏店铺
	 */
	/**
	 * 获取收藏的店铺
	 */
}
